package miage.m1.poo.pluginArchive;

import java.awt.Color;
import java.awt.GridLayout;
import java.io.*;
import java.util.Enumeration;
import java.util.zip.*;

import javax.swing.*;


/**
 * 
 * Panel permettant de voir l'interieur d'une archive
 * 
 * @author Yahn, Mahamoud, Nafissa, Helene
 *
 */
public class LectureArchive extends JPanel{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	/**
	 * Conteur pour savoir combien de fichiers et de dossiers sont contenus dans l'archive
	 */
	private int count = 0;
	
	/**
	 * Tableau de Label
	 */
	private JLabel[] jl = new JLabel[1000];
	
	/**
	 * Image d'un fichier
	 */
	private ImageIcon ii1 = new ImageIcon("src/fichier/fichier.png");
	
	/**
	 * Image d'un dossier
	 */
	private ImageIcon ii2 = new ImageIcon("src/fichier/dossier.png");

	/**
	 * Constructeur
	 */
	public LectureArchive() {
		super();
	}

	/**
	 * Methode permettant de parcourir l'archive, de les mettre dans un label et de 
	 * les placer dans le Panel
	 * 
	 * @param f
	 * L'archive a parcourir
	 * 
	 * @throws ZipException
	 * @throws IOException
	 * 
	 * @see LectureArchive#count
	 * @see LectureArchive#jl
	 * @see LectureArchive#ii1
	 * @see LectureArchive#ii2
	 * 
	 */
	protected void afficherArchive(File f) throws ZipException, IOException{
		if (f.isFile() && (f.getName().endsWith(".zip") || f.getName().endsWith(".jar")
				|| f.getName().endsWith(".rar") || f.getName().endsWith(".war"))){
			ZipFile zf = new ZipFile(f);
			Enumeration entrees = zf.entries();
			while(entrees.hasMoreElements()){
				ZipEntry e = (ZipEntry)entrees.nextElement();
				if (e.isDirectory()){
					jl[count++] = new JLabel(e.getName(), (Icon)ii2, 0);
				}else{
					jl[count++] = new JLabel(e.getName(), (Icon)ii1, 0);
				}
			}
			this.setLayout(new GridLayout(count/2,count%2));

			this.setBackground(Color.WHITE);
			
			
			for(int i =0; i < count;i++){
				this.add(jl[i]);
			}
			this.validate();
		}else{
			System.err.println("Vous n'avez pas donne en parametre un fichier .jar, .rar, .war ou .zip");
		}
	}

}
